package br.com.hs.nfe.util;

/**
 * Classe de representação do estado.
 * @author Ranlive Hrysyk
 */
public class EstadoTO implements Comparable {

    private String codigo;
    private String descricao;
    private String sigla;

    /**
     * Construtor sem parâmetros.
     */
    public EstadoTO() {
    }

    /**
     * Contrutor com parâmetros.
     * @param codigo Código do estado.
     * @param sigla Sigla da UF.
     * @param descricao Nome do estado.
     */
    public EstadoTO(String codigo, String sigla, String descricao) {
        this.codigo = codigo;
        this.sigla = sigla;
        this.descricao = descricao;
    }

    /**
     * Código do estado.
     */
    public String getCodigo() {
        return codigo;
    }

    /**
     * Informar o código do estado.
     * @param codigo Código do estado.
     */
    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    /**
     * Nome do estado.
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * Informar o nome do estado.
     * @param nome Nome do estado.
     */
    public void setDescricao(String nome) {
        this.descricao = nome;
    }

    /**
     * Sigla da UF.
     */
    public String getSigla() {
        return sigla;
    }

    /**
     * Informar a sigla do UF.
     * Informar ‘EX’ para operações com o exterior.
     * @param sigla Sigla da UF.
     */
    public void setSigla(String sigla) {
        this.sigla = sigla;
    }

    @Override
    public int compareTo(Object o) {
        return getSigla().compareTo(((EstadoTO) o).getSigla());
    }

    @Override
    public String toString() {
        return getSigla();
    }

    @Override
    public boolean equals(Object obj) {
        boolean equal = false;
        if ((obj != null) && ((obj instanceof EstadoTO))) {
            EstadoTO other = (EstadoTO) obj;

            if ((other.getCodigo() != null) && (other.getCodigo().equals(getCodigo()))) {
                equal = true;
            } else if ((other.getSigla() != null) && (other.getSigla().equals(getSigla()))) {
                equal = true;
            }
        }
        return equal;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 59 * hash + (this.codigo != null ? this.codigo.hashCode() : 0);
        hash = 59 * hash + (this.sigla != null ? this.sigla.hashCode() : 0);
        return hash;
    }
}
